unsigned int proximity:1; /* proximity field is set */
unsigned int course:1; /* course field is set */
unsigned int speed:1; /* speed field is set */
+ unsigned int depth:1; /* depth field is set */
/* !ToDo!
unsigned int altitude:1; /+ altitude field is set +/
... and others
case WPT_cC_OFS + 2:
case WPT_c5_OFS + 2:
case WPT_c8_OFS + 2:
- GMSD_SET(depth, altf * atof(cin));
+ WAYPT_SET(wpt, depth, altf * atof(cin));
break;
case TRKPT__OFS + 10: /* temperature */
if (gmsd == NULL) return;
if ((gmsd->flags.category && gmsd->category) ||
- gmsd->flags.depth ||
+ waypt->wpt_flags.depth ||
waypt->wpt_flags.proximity ||
waypt->wpt_flags.temperature ||
gmsd->flags.display)
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " \
"xsi:schemaLocation=\"http://www.garmin.com/xmlschemas/GpxExtensions/v2 " \
"http://www.garmin.com/xmlschemas/GpxExtensions/v2/GpxExtensionsv2.xsd\">\n", space++ * 2, "");
- if (waypt->wpt_flags.proximity)
+ if WAYPT_HAS(waypt, proximity)
gbfprintf(ofd, "%*s<gpxx:Proximity>%.6f</gpxx:Proximity>\n", space * 2, "", waypt->proximity);
- if (waypt->wpt_flags.temperature)
+ if WAYPT_HAS(waypt, temperature)
gbfprintf(ofd, "%*s<gpxx:Temperature>%.6f</gpxx:Temperature>\n", space * 2, "", waypt->temperature);
- if (gmsd->flags.depth)
- gbfprintf(ofd, "%*s<gpxx:Depth>%.6f</gpxx:Depth>\n", space * 2, "", gmsd->depth);
+ if WAYPT_HAS(waypt, depth)
+ gbfprintf(ofd, "%*s<gpxx:Depth>%.6f</gpxx:Depth>\n", space * 2, "", waypt->depth);
if (gmsd->flags.display)
{
char *cx;
*/
switch(tag) {
case 2:
- waypt->proximity = atof(cdatastr);
- waypt->wpt_flags.proximity = (*cdatastr);
+ if (*cdatastr) WAYPT_SET(waypt, proximity, atof(cdatastr));
break;
case 3:
- waypt->temperature = atof(cdatastr);
- waypt->wpt_flags.temperature = (*cdatastr);
+ if (*cdatastr) WAYPT_SET(waypt, temperature, atof(cdatastr));
break;
case 4:
- GMSD_SET(depth, atof(cdatastr));
+ if (*cdatastr) WAYPT_SET(waypt, depth, atof(cdatastr));
break;
case 5:
if (case_ignore_strcmp(cdatastr, "SymbolOnly") == 0) {
if (way->category != 0) GMSD_SET(category, way->category);
if (way->dst < 1.0e25f) WAYPT_SET(wpt, proximity, way->dst);
if (way->temperature_populated) WAYPT_SET(wpt, temperature, way->temperature);
- if (way->dpth < 1.0e25f) GMSD_SET(depth, way->dpth);
+ if (way->dpth < 1.0e25f) WAYPT_SET(wpt, depth, way->dpth);
GMSD_SETNSTR(cc, way->cc, sizeof(way->cc));
GMSD_SETNSTR(state, way->state, sizeof(way->state));
GMSD_SETSTR(city, way->city);
way->dspl = gt_switch_display_mode_value(
GMSD_GET(display, way->dspl), gps_waypt_type, 0);
way->category = GMSD_GET(category, way->category);
- way->dpth = GMSD_GET(depth, way->dpth);
+ way->dpth = WAYPT_GET(wpt, depth, way->dpth);
way->dst = WAYPT_GET(wpt, proximity, way->dpth);
way->temperature = WAYPT_GET(wpt, temperature, way->temperature);
unsigned int wpt_class:1;
unsigned int display:1;
unsigned int category:1;
- unsigned int depth:1;
unsigned int city:1;
unsigned int state:1;
unsigned int facility:1;
int wpt_class;
gbint32 display;
gbint16 category;
- double depth; /* depth in meters */
char *city; /* city name */
char *facility; /* facility name */
char *state; /* state */
print_distance(wpt->altitude, 1, 0);
gbfprintf(fout, "\t");
- x = GMSD_GET(depth, unknown_alt);
+ x = WAYPT_GET(wpt, depth, unknown_alt);
if (x != unknown_alt)
print_distance(x, 1, 0);
gbfprintf(fout, "\t");
&wpt->latitude, &wpt->longitude, MYNAME);
break;
case 5: if (parse_distance(str, &d)) wpt->altitude = d; break;
- case 6: if (parse_distance(str, &d)) GMSD_SET(depth, d); break;
+ case 6: if (parse_distance(str, &d)) WAYPT_SET(wpt, depth, d); break;
case 7: if (parse_distance(str, &d)) WAYPT_SET(wpt, proximity, d); break;
case 8: if (parse_temperature(str, &d)) WAYPT_SET(wpt, temperature, d); break;
case 9: if (parse_display(str, &i)) GMSD_SET(display, i); break;
/*******************************************************************************/
-/* static char gdb_release[] = "$Revision: 1.52 $"; */
-static char gdb_release_date[] = "$Date: 2007/05/25 10:13:21 $";
+/* static char gdb_release[] = "$Revision: 1.53 $"; */
+static char gdb_release_date[] = "$Date: 2007/06/02 21:00:37 $";
static gbfile *fin, *fout;
static int gdb_ver, gdb_category, gdb_via, gdb_roadbook;
if (FREAD_C == 1) {
double depth = gbfgetdbl(fin);
- GMSD_SET(depth, depth);
+ WAYPT_SET(res, depth, depth);
#if GDB_DEBUG
DBG(GDB_DBG_WPTe, 1)
printf(MYNAME "-wpt \"%s\" (%d): Depth = %.1f\n",
wpt->creation_time = FREAD_i32;
}
if (FREAD_C == 1) {
- wpt->depth = gbfgetdbl(fin);
+ WAYPT_SET(wpt, depth, gbfgetdbl(fin));
}
if (FREAD_C == 1) {
- wpt->temperature = gbfgetdbl(fin);
+ WAYPT_SET(wpt, temperature, gbfgetdbl(fin));
}
track_add_wpt(res, wpt);
FWRITE_LATLON(wpt->longitude); /* longitude */
FWRITE_DBL(wpt->altitude, unknown_alt); /* altitude */
FWRITE_CSTR(wpt->notes);
- FWRITE_DBL(WAYPT_GET(wpt, proximity, 0), 0); /* proximity */
+ FWRITE_DBL(WAYPT_GET(wpt, proximity, unknown_alt), unknown_alt); /* proximity */
FWRITE_i32(display); /* display */
FWRITE_i32(0); /* color (colour) */
FWRITE_i32(icon); /* icon */
FWRITE_CSTR(GMSD_GET(state, "")); /* state */
FWRITE_CSTR(GMSD_GET(facility, "")); /* facility */
FWRITE_C(0); /* unknown */
- FWRITE_DBL(GMSD_GET(depth, 0), 0); /* depth */
+ FWRITE_DBL(WAYPT_GET(wpt, depth, unknown_alt), unknown_alt); /* depth */
/* VERSION DEPENDENT CODE */
if (gdb_ver <= GDB_VER_2) {
QUEUE_FOR_EACH((queue *)&trk->waypoint_list, elem, tmp)
{
+ double d;
waypoint *wpt = (waypoint *)elem;
trkpt_ct++; /* increase informational number of written route points */
FWRITE_LATLON(wpt->longitude);
FWRITE_DBL(wpt->altitude, unknown_alt);
FWRITE_TIME(wpt->creation_time);
- FWRITE_DBL(wpt->depth, unknown_alt);
- FWRITE_DBL(wpt->temperature, 0);
+ d = WAYPT_GET(wpt, depth, unknown_alt);
+ FWRITE_DBL(d, unknown_alt);
+ d = WAYPT_GET(wpt, temperature, -99999);
+ FWRITE_DBL(d, -99999);
}
/* finalize track */
fi.i = le_read32(&rec->wpt.d108.alt);
wpt_tmp->altitude = fi.f;
fi.i = le_read32(&rec->wpt.d108.dpth);
- wpt_tmp->depth = fi.f;
+ WAYPT_SET(wpt_tmp, depth, fi.f);
fi.i = le_read32(&rec->wpt.d108.dist);
WAYPT_SET(wpt_tmp, proximity, fi.f);
wpt_tmp->wpt_flags.icon_descr_is_dynamic = 0;
thisWaypoint->longitude = GPS_Math_Semi_To_Deg(lon);
thisWaypoint->altitude = mps_altitude;
if (mps_proximity != unknown_alt) WAYPT_SET(thisWaypoint, proximity, mps_proximity);
- thisWaypoint->depth = mps_depth;
+ if (mps_depth != unknown_alt) WAYPT_SET(thisWaypoint, depth, mps_depth);
/* might need to change this to handle version dependent icon handling */
thisWaypoint->icon_descr = gt_find_desc_from_icon_number(icon, MAPSOURCE, &dynamic);
double mps_altitude = wpt->altitude;
double mps_proximity = (mpsuseprox ? WAYPT_GET(wpt, proximity, unknown_alt) : unknown_alt);
- double mps_depth = (mpsusedepth ? wpt->depth : unknown_alt);
+ double mps_depth = unknown_alt;
lat = GPS_Math_Deg_To_Semi(wpt->latitude);
lon = GPS_Math_Deg_To_Semi(wpt->longitude);
+ if (WAYPT_HAS(wpt, depth) && mpsusedepth) mps_depth = wpt->depth;
if(wpt->description) src = wpt->description;
if(wpt->notes) src = wpt->notes;
thisWaypoint->latitude = GPS_Math_Semi_To_Deg(lat);
thisWaypoint->longitude = GPS_Math_Semi_To_Deg(lon);
thisWaypoint->altitude = mps_altitude;
- thisWaypoint->depth = mps_depth;
+ if (mps_depth != unknown_alt) WAYPT_SET(thisWaypoint, depth, mps_depth);
}
}
thisWaypoint->creation_time = le_read32(&dateTime);
thisWaypoint->microseconds = 0;
thisWaypoint->altitude = mps_altitude;
- thisWaypoint->depth = mps_depth;
+ if (mps_depth != unknown_alt) WAYPT_SET(thisWaypoint, depth, mps_depth);
track_add_wpt(track_head, thisWaypoint);
} /* while (trk_count--) */
char zbuf[10];
double mps_altitude = wpt->altitude;
- double mps_depth = (mpsusedepth ? wpt->depth : unknown_alt);
+ double mps_depth = unknown_alt;
lat = GPS_Math_Deg_To_Semi(wpt->latitude);
lon = GPS_Math_Deg_To_Semi(wpt->longitude);
+ if (WAYPT_HAS(wpt, depth) && mpsusedepth) mps_depth = wpt->depth;
memset(zbuf, 0, sizeof(zbuf));
break;
case fld_depth:
- wpt->depth = atof(s);
+ WAYPT_SET(wpt, depth, atof(s));
break;
case fld_terminator: /* dummy */